package org.reunionemu.jlauncher; import java.io.IOException; import java.net.Socket; import java.net.URL; import java.net.URLConnection; public class Handler extends java.net.URLStreamHandler { final int DEFAULT_PORT = 4005; protected java.net.URLConnection openConnection(java.net.URL url) throws java.io.IOException { return new URLConnection(url) { private java.net.Socket socket; @Override public void connect() throws IOException { URL url = getURL(); socket = new Socket(url.getHost(), url.getPort()==-1?url.getDefaultPort():url.getPort()); connected = true; } public java.io.InputStream getInputStream() throws java.io.IOException { if (!connected) connect(); return socket.getInputStream(); } }; } @Override protected int getDefaultPort(){ return DEFAULT_PORT; } public static void register() { final String packageName = Handler.class.getPackage().getName(); final String pkg = packageName.substring(0, packageName.lastIndexOf( '.' ) ); final String protocolPathProp = "java.protocol.handler.pkgs"; String uriHandlers = System.getProperty(protocolPathProp, ""); if ( uriHandlers.indexOf( pkg ) == -1 ) { if ( uriHandlers.length() != 0 ) uriHandlers += "|"; uriHandlers += pkg; System.setProperty( protocolPathProp,uriHandlers ); } } }